package com.mr.example2.topn;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class FlowBeanExample2Reducer extends Reducer<LongWritable, Text, Text, LongWritable> {

	private int num = 0;

	// 输出记录在reduce控制
	@Override
	protected void reduce(LongWritable key, Iterable<Text> values,
						  Reducer<LongWritable, Text, Text, LongWritable>.Context context) throws IOException, InterruptedException {

			/*for (Text value : values) {

				// 只输出前10条
				if(num>=10) {

					break;

				}

				context.write(value, key);

				num++;
			}*/


		// 只输出前十条，如果前十条有并列的一并输出
		// 将前十条全部写出，如果第十条有并列的，一并将这条所在的组全部写出

			/*if(num<=9) {

				for (Text value : values) {

					context.write(value, key);

					num++;

				}

			}*/

		// 只输出前十名，如果并列的一并输出(有两个第一名，接下来是第二名)
		// 每输出一组记一，输出前十组
			/*if(num<=9) {

				for (Text value : values) {

					context.write(value, key);

				}

				num++;

			}*/

		// 只输出前十名，如果并列的一并输出（有两个第一名，接下来是第三名）
		// 每输出一组记一，输出前十组
		int count = 0;

		if(num<=9) {

			for (Text value : values) {

				context.write(value, key);

				count ++;

			}

			num += count;

		}

	}

}
